package cloud.seri.iot.manager.service.dto

import io.swagger.annotations.ApiModel
import io.swagger.annotations.ApiModelProperty
import java.io.Serializable
import java.time.Instant
import javax.validation.constraints.NotNull
import javax.validation.constraints.Size

/**
 * A DTO for the [cloud.seri.iot.manager.domain.Product] entity.
 */
@ApiModel(description = "产品，设备分类",value = "Product")
data class ProductDTO(
    /**
     * 产品名称
     */

    @get: NotNull
    @get: Size(min = 4, max = 32)
    @ApiModelProperty(value = "产品名称", required = true)
    var productName: String? = null,
    /**
     * 产品的数据类型，指设备与云端之间的数据通信协议类型。
     */

    @ApiModelProperty(value = "产品的数据类型，指设备与云端之间的数据通信协议类型。")
    var dataFormat: Int? = null,
    /**
     * 高级版产品的节点类型。取值：0：设备。设备不能挂载子设备，可以直连IoT Hub，也可以作为网关的子设备连接IoT Hub。1：网关。网关可以挂载子设备，具有子设备管理模块，维持子设备的拓扑关系，并且可以将拓扑关系同步到云端。
     */

    @ApiModelProperty(value = "高级版产品的节点类型。取值：0：设备。设备不能挂载子设备，可以直连IoT Hub，也可以作为网关的子设备连接IoT Hub。1：网关。网关可以挂载子设备，具有子设备管理模块，维持子设备的拓扑关系，并且可以将拓扑关系同步到云端。")
    var deviceType: Int? = null,
    /**
     * 产品Key
     */

    @ApiModelProperty(value = "产品Key")
    var productKey: String? = null,
    /**
     * 产品秘钥
     */

    @ApiModelProperty(value = "产品秘钥")
    var productSecret: String? = null,
    /**
     * 设备类型
     */

    @ApiModelProperty(value = "设备类型")
    var categoryName: String? = null,
    /**
     * CategoryKey
     */

    @ApiModelProperty(value = "CategoryKey")
    var categoryKey: String? = null,
    /**
     * 联网方式
     */

    @ApiModelProperty(value = "联网方式")
    var netType: String? = null,
    /**
     * 状态
     */

    @ApiModelProperty(value = "状态")
    var status: Int? = null,
    /**
     * 产品描述
     */

    @ApiModelProperty(value = "产品描述")
    var description: String? = null,

    @ApiModelProperty(value = "创建时间")
    var createdDate: Instant? = null

) : Serializable
